1. The Field of the Invention
The present invention relates to optoelectronic communication systems. More particularly, embodiments of the invention relate to systems and methods for creating firmware modules that can be loaded and executed by an electronic module without resetting the electronic module.
2. The Relevant Technology
Computing and networking technology have transformed our world. As the amount of information communicated over networks has increased, high-speed transmission has become ever more critical. Many high-speed data transmission networks rely on optoelectronic devices, including optoelectronic transceivers and transponders, and similar devices for facilitating transmission and reception of digital data embodied in the form of optical signals over optical fibers. Optical networks are thus found in a wide variety of high-speed applications in networks of all sizes.
Typically, data transmission in such networks is implemented by way of an optical transmitter (also referred to as an electro-optic transducer), such as, for example a laser or Light Emitting Diode (LED). The electro-optic transducer emits light when current is passed there through, the intensity of the emitted light being a function of the current magnitude through the transducer. Data reception is generally implemented by way of an optical receiver (also referred to as an optoelectronic transducer), an example of which is a photodiode. The optoelectronic transducer receives light and generates a current, the magnitude of the generated current being a function of the intensity of the received light.
The characteristics of an optical transmitter and receiver are changed over operational conditions like temperature and voltage. For example, the threshold current and slope efficiency of a laser diode change over temperature. To ensure the quality and integrity of data transmission, various measurement and compensation circuits are employed by an optoelectronic device to compensate for these changes. Furthermore, an optoelectronic device with digital diagnostics features may need to communicate with hosting equipment in a protocol defined by an applicable multi source agreement (“MSA”) specification, such as the small form-factor pluggable (SFP) transceiver MSA and 10-gigabit small form-factor pluggable (XFP) transceiver MSA.
The measurement, compensation, diagnostics, communication, and potentially other functions are typically controlled and/or implemented in part by a microcontroller and its associated embedded software (hereinafter referred to as “firmware”). The firmware is typically designed in a modular form for ease of maintenance and contains multiple firmware modules with each handling one of the above functions. For example, the firmware may include an acquisition module for sequencing an analog-to-digital converter (ADC) to measure multiple analog input signals one by one. It may also have a calibration module that adopts certain algorithms to eliminate errors of various component parameters, e.g., temperature coefficient of a thermistor sensing the operational temperature. The firmware may further contain a logic evaluation module that assesses the calibrated parameters in real time and triggers a control action upon crossing preset alarm and warning thresholds, or simply leaves the calibrated parameters and alarm and warning flags to a communication module for queries initiated by host equipment. All these firmware modules are executed by a microcontroller or the like which typically contains only one or two CPUs due to the restrictions of component cost.
Typically, analysis and testing of optoelectronic devices require an associated firmware code to extract debug information when an error is encountered in the optoelectronic device. The debugging process may necessitate loading of a new or an updated firmware code to take an appropriate debug action for the encountered error. Existing systems and methods facilitate loading of new firmware onto the optoelectronic device, which can be executed only after resetting the optoelectronic device. However, the resetting removes the error condition being analyzed during the debugging operation. Such removal of an error condition may be undesirable, especially when the occurrence of a particular type of error is rare or not frequently repeated.
In addition, a topical analysis may be performed in a development environment by executing the firmware code while the optoelectronic device is running. However, some bugs do not show up or are not reproducible during the topical analysis. Hence, it may be difficult to look into the firmware code while it is executing and a run-time gathering of debug information is necessitated.
While discussed in the context of optoelectronic devices, similar problems may occur with SAS and SATA modules. Thus, what are needed are improved methods and systems for creating, loading and executing firmware modules, without resetting them, in optoelectronic, SAS/SATA, and other electronic devices.
The subject matter claimed herein is not limited to embodiments that solve any disadvantages or that operate only in environments such as those described above. Rather, this background is only provided to illustrate one exemplary technology area where some embodiments described herein may be practiced.